<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    //函数名和实例化构造名相同且大写（非强制，但这么写有助于区分构造函数和普通函数）
    // function Person(name, age) {
    //   this.name = name
    //   this.age = age
    // }
    // Person.prototype.say = function () {
    //   return '我的名字叫' + this.name + '今年' + this.age + '岁了'
    // }
    // var obj = new Person('laotie', 88) //通过构造函数创建对象，必须使用new 运算符
    // obj.name
    // console.log(obj.say()) //我的名字叫laotie今年88岁了

    // class Person {
    //   //定义了一个名字为Person的类
    //   constructor(name, age) {
    //     //constructor是一个构造方法，用来接收参数
    //     this.name = name //this代表的是实例对象
    //     this.age = age
    //   }
    //   say() {
    //     //这是一个类的方法，注意千万不要加上function
    //     return '我的名字叫' + this.name + '今年' + this.age + '岁了'
    //   }
    //   open() {}
    // }
    // var obj = new Person('laotie', 88)
    // console.log(obj.say()) //我的名字叫laotie今年88岁了

    // class Name {
    //   say() {
    //     this.fn(8888888)
    //     return '我的名字叫' + this.name + '今年' + this.age + '岁了'
    //   }
    //   open() {
    //     return '我的名字叫' + this.name + '今年' + this.age + '岁了'
    //   }
    // }
    // Name.prototype.fn = function (age) {
    //   console.log(age)
    // }
    // var obj = new Name('张三', function (res) {
    //   console.log(res, 10000)
    // })
    // obj.fn(9999999999)
    // // console.log()
    // // console.log(obj.say())

    // class Desk {
    //   constructor(name) {
    //     this.name = name
    //   }
    //   say(hua) {
    //     //说话
    //     return this.name + '说：' + hua
    //   }
    //   eat() {
    //     //吃饭
    //   }
    // }
    // class yiqunren {
    //   constructor() {
    //     this.xixi = new Desk('xixi') // 这里没有用this哦，直接返回一个全新的对象
    //     this.lao6 = new Desk('老6') // 这里没有用this哦，直接返回一个全新的对象
    //   }
    //   name() {
    //     return this.xixi.say('我是一个漂亮女孩')
    //   }
    // }
    // var obj = new yiqunren()
    // var zhangsan = new Desk('张三')
    // console.log(obj.name()) //我是一只小小小小鸟！哦

    // class Box {
    //   constructor(num1, num2) {
    //     this.num1 = num1
    //     this.num2 = num2
    //   }
    //   num4 = 777
    //   sum() {
    //     console.log(this.num4)
    //     return this.num1 + this.num2
    //   }
    // }
    // Box.prototype.num3 = 666
    // var box = new Box(12, 88)
    // box.sum()
    // console.log(box) // 100
    // console.log(box.hasOwnProperty('num4')) //true
    // console.log(box.hasOwnProperty('num1')) //true
    // console.log(box.hasOwnProperty('num2')) //true
    // console.log(box.hasOwnProperty('num3')) //false
    // console.log(box.hasOwnProperty('sum')) //false
    // console.log('num1' in box) //true
    // console.log('num2' in box) //true
    // console.log('sum' in box) //true
    // console.log('say' in box) //false

    // class Parent {
    //   constructor(name = 'meili') {
    //     this.proname = name
    //   }
    //   fun() {
    //     return 6666
    //   }
    // }

    // class Son extends Parent {
    //   constructor() {
    //     super()
    //     this.proname = name
    //   }
    // }

    // let obj = new Son()
    // console.log(obj.fun())

    // class A {
    //   constructor() {
    //     console.log(new.target) //new.target指向当前正在执行的函数
    //   }
    // }

    // class B extends A {
    //   constructor() {
    //     // console.log(1)
    //     super()
    //     // console.log(2)
    //   }
    // }

    // new A() // A

    // new B() // B
    // class Father {
    //   test() {
    //     return 0
    //   }
    //   static test1() {
    //     return 1
    //   }
    // }

    // class Child2 extends Father {
    //   constructor() {
    //     super()
    //     // 调用父类普通方法
    //     console.log(super.test()) // 0
    //   }
    //   static test3() {
    //     // 调用父类静态方法
    //     console.log(super.test1() + 2)
    //     return super.test1 + 2
    //   }
    // }
    // var obj = new Child2()
    // Child2.test3() // 3
    // // Child2.test3() // 3

    // var Father = {
    //   // ...
    //   aname: '李四',
    //   aage: 999,
    // }
    // // class Child extends Father {
    // //   // ...
    // // }
    // // Uncaught TypeError: Class extends value #<Object> is not a constructor or null
    // class Child {
    //   constructor() {
    //     this.name = '张三'
    //     this.age = 18
    //   }
    // }
    // // 解决方案
    // Object.setPrototypeOf(Child.prototype, Father)
    // var obj = new Child()
    // console.log(obj.aname)

    class Parent {
      constructor(name = 'nihao') {
        this.printName = name
      }
      get getnames() {
        console.log('我是获取方法')
        return '8888' + this.printName
      }
      set getnames(value) {
        console.log('我是赋值方法')
        this.printName = value
      }
    }
    var obj = new Parent()
    // console.log(obj.getnames)
    //赋值

    // obj.getnames = '小红鞋'
    obj.printName = '小绿鞋'
    console.log(obj.printName)

    var arr = [
      {
        name: 任务1,
        status: 11,
      },
      {
        name: 任务2,
        status: 99,
      },
      {
        name: 任务3,
        status: 1,
      },
    ]

    class Parent {
      constructor(name = 'meili') {
        this.proname = name
      }
      fun() {}
    }

    class Son extends Parent {
      constructor() {
        this.proname = name
        super()
      }
    }

    let obj = new Son()
    console.log(obj)

    var promise = new Promise((resolve, reject) => {
      //b 把需要执行的异步操作放在这里
      $.get('/getUser', (res) => {
        //获取数据的异步操作已经执行完毕了，等待下一步的执行，通过执行resolve函数，告诉外界你可以执行下一步操作了
        //c、

        if (res.code == 200) {
          //把用户信息存到本地存储 ,
          //把用户信息显示到html上
        }

        resolve(res)
        //而执行的下一步操作，其实就是写在then的回调函数中的
      })
    })
    //a、
    promise.then((res) => {
      //d、执行后续的操作
      console.log(res)
    })

    new Promise((resolve, reject) => {
      $.get('/getUser', (res) => {
        resolve(res)
      })
    })
      .then((res) => {
        //用户基本信息
        return new Promise((resolve) => {
          $.get('/getUserDetail', (res) => {
            resolve(res)
          })
        })
      })
      .then((res) => {
        //用户详情
        return new Promise((resolve) => {
          $.get('/getCart', (res) => {
            resolve(res)
          })
        })
      })
      .then((res) => {
        //购物车信息
      })
    var a = 12
    var str = 'kalsjd${a}lkasjdklj'
    var url = 'http://www.baidu.com/url/${}/add'
    const n = 'child'
    const label = 'menu test${}'
  </script>
</html>
